package com.htl.线程.线程池;

import java.util.concurrent.*;

/**
 *  7 大核心参数：
 *      1、corePoolSize 核心池的大小，目前上班的柜台数
 *      2、maximumPoolSize 线程池最大线程数，所有的柜台数（包括上班和不上班的）
 *      3、keepAliveTime：空闲线程的存活时间
 *      4、unit：keepAliveTime 时间单位
 *      5、workQueue：阻塞队列，等候区
 *      6、threadFactory：线程工厂，生成线程对象
 *      7、handler：拒绝任务策略
 */

public class ThreadPool {
    public static void main(String[] args) {
        ExecutorService executorService = new ThreadPoolExecutor(
                2,
                3,
                1L,
                TimeUnit.SECONDS, new ArrayBlockingQueue<>(2),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );

        for (int i = 0; i < 4; i++) {
            executorService.execute(()->{
                try {
                    TimeUnit.MICROSECONDS.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println(Thread.currentThread().getName() + "=========>办理业务");
            });
        }

        executorService.shutdown();
    }
}


